package com.ruoyi.common.enums;

/**
 * 入库类型枚举类
 */
public enum StorageTypeEnum {
    /**
     * 采购入库
     */
    PURCHASE(0, "采购入库"),
    
    /**
     * 退货入库
     */
    RETURN(1, "退货入库"),
    
    /**
     * 调拨入库
     */
    TRANSFER(2, "调拨入库"),
    
    /**
     * 报溢入库
     */
    OVERAGE(3, "报溢入库"),
    
    /**
     * 其他入库
     */
    OTHER(4, "其他入库"),
    
    /**
     * 质检入库
     */
    QUALITY_INSPECTION(5, "质检入库"),

    /**
     * 换货入库
     */
    EXCHANGE(6, "换货入库");

    private final int code;       // 入库类型编码
    private final String desc;    // 入库类型描述

    // 构造方法
    StorageTypeEnum(int code, String desc) {
        this.code = code;
        this.desc = desc;
    }

    /**
     * 获取入库类型的编码
     *
     * @return code
     */
    public int getCode() {
        return code;
    }

    /**
     * 获取入库类型的描述
     *
     * @return desc
     */
    public String getDesc() {
        return desc;
    }

    /**
     * 根据编码获取对应的枚举
     *
     * @param code 入库类型编码
     * @return 入库类型枚举
     */
    public static StorageTypeEnum getByCode(int code) {
        for (StorageTypeEnum type : values()) {
            if (type.getCode() == code) {
                return type;
            }
        }
        return null;
    }

    @Override
    public String toString() {
        return String.format("StorageTypeEnum{code=%d, desc='%s'}", code, desc);
    }
}
